// 生成随机数(start <= a < end) start:起始范围 end:结束范围 start < end
int getRandInt(int start, int end)
{
	static int a;
	a =  end > start ? start ? rand() % start + end - start : rand() % end : rand();
	return a;
}

// 判断是否是素数
int isPrime(unsigned int n)
{
	for (int i = n / 2; i > 1; --i)
		if (n % i == 0) 
			return 0;
	return 1;
}

// 得到整数长度
int getIntLen(int num)
{
    int a = num, len = 0;
    while (a > 0)
    {
        a /= 10;
        ++len;
    }
    return len;
}

// 得到小数位数
int getDoubleLen(double num)
{
    double a = num;
    int n = 0, b = 0;

    while ((a - b) > 1e-7)
    {
        a *= 10;
        b = (int)a;
        ++n;
    }

    return n;
}

// 检查整数是否在整数数组里面 num:整数 arr：整数数组 len:数组长度
int inArrInt(int num, int * arr, int len)
{
    int a = 0, i;

    for (i = 0; i < len; ++i) {
        if (num == arr[i])
        {
            a = 1;
            break;
        }
    }
    
    return a;
}

// 将整数拆分为数组元素 传入整数
int * splitInt(int num)
{
    int *arr, a = num, b, c;
    int len = getIntLen(a);
    
    c = len - 1;
    arr = (int *)malloc(sizeof(int) * len);

    while (a > 0)
    {
        b = a % 10;
        *(arr + c) = b;
        a /= 10;
        --c;
    }

    return arr;
}

// 交换两个数字
void swapInt(int *a, int *b)
{
	int c = *a;
	*a = *b;
	*b = c;
}

